package com.xihu.credit.service;

import com.xihu.credit.entity.User;
import com.xihu.credit.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;


@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 注册新用户
     * @param user 用户对象
     * @return 插入操作的影响行数
     *
     */

    public int updateProfile(String username, String profile) {
        return userMapper.updateProfile(username, profile);
    }

    public int updatePasswordByUsername(String username, String newPassword) {
        return userMapper.updatePasswordByUsername(username, newPassword);
    }



    public User findByEmail(String email) {
        return userMapper.findByEmail(email);
    }

    public User findByUsername(String username) {
        return userMapper.findByUsername(username);
    }


    public int updatePasswordByEmail(String email, String password) {
        return userMapper.updatePasswordByEmail(email, password);
    }
    public String register(User user) {
        // 判断手机号是否已经注册
        if (userMapper.findByEmail(user.getEmail()) != null) {
            return "email_exists";
        }

        if (userMapper.findByMobile(user.getMobile()) != null) {
            return "mobile_exists";
        }


        // 设置默认值
        user.setUsername(user.getMobile()); // 用手机号当用户名
        user.setRegisterTime(LocalDateTime.now());
        user.setProfile("/image/profile.png"); // 默认头像
        // 密码建议加密（这里省略）

        int result = userMapper.register(user);
        return result > 0 ? "success" : "fail";
    }

    /**
     * 用户登录，检查用户名和密码是否匹配
     * @param username 用户名
     * @param password 密码
     * @return 用户信息
     */
    public User login(String username, String password) {
        User user = userMapper.getUserByUsername(username);
        if (user != null && user.getPassword().equals(password)) {
            return user; // 登录成功，返回用户信息
        }
        return null; // 登录失败，返回 null
    }

    /**
     * 更新用户信息
     * @param user 用户对象
     * @return 更新操作的影响行数
     */
    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    /**
     * 根据用户ID获取用户信息
     * @param id 用户ID
     * @return 用户信息
     */
    public User getUserById(Long id) {
        return userMapper.getUserById(id);
    }
}

